﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Navigation;
using WpfApplication2.SindicatoWebService;
using System.Windows;
using WpfApplication2.Helpers;
using System.Windows.Input;
using System.Windows.Controls;
using WpfApplication2.UserControls;
using WpfApplication2.Views;

namespace WpfApplication2.ViewModels.TipoOrden
{
    public class NuevoTipoOrdenViewModel : ViewModel
    {
        #region properties

        public Service1SoapClient WS;
        public Instancias Instancias { get; set; }

        public PropertyElement Nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                if (nombre != value)
                {
                    nombre = value;
                    RaisePropertyChanged("Nombre");
                }
            }
        }
        private PropertyElement nombre;


        public PropertyElement Precio
        {
            get
            {
                return precio;
            }
            set
            {
                if (precio != value)
                {
                    precio = value;
                    RaisePropertyChanged("Precio");
                }
            }
        }
        private PropertyElement precio;


        #endregion

        public NuevoTipoOrdenViewModel(Instancias instancias)
        {
            WS = new Service1SoapClient();
            Instancias = instancias;

            Nombre = new PropertyElement() { Foreground = "White", Name = "Nombre" };
            Precio = new PropertyElement() { Foreground = "White", Name = "Precio" };
            ValidationList = new List<PropertyElement>();
            ValidationList.Add(Nombre);
            ValidationList.Add(Precio);
            Nombre.Validations.Add(ValidationType.Requerido);
            Precio.Validations.Add(ValidationType.Requerido);
        }


        private DelegateCommand guardarTipoOrden;

        public ICommand GuardarTipoOrden
        {
            get
            {
                if (guardarTipoOrden == null)
                {
                    guardarTipoOrden = new DelegateCommand(Guardar, CanExecute);
                }
                return guardarTipoOrden;
            }
        }

        private bool CanExecute()
        {
            return true;
        }

        private void Guardar()
        {
            if (DataIsValid)
            { 
                string msj = WS.GuardarTipoOrden(new TipoOrdenDTO() { Nombre = Nombre.Value, Precio = Precio.Value });
                Instancias.ModalDialog.ShowHandlerDialog(msj);
                Instancias.FrameContent.Content = new Home();
                
            }
            RaisePropertyChanged("Nombre");
            RaisePropertyChanged("Precio");
        }
    }
}
